/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gerenciadorescola.controller.pattern.command;

import gerenciadorescola.model.Escola;
import gerenciadorescola.model.Professor;
import gerenciadorescola.model.Turma;
import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author Pedro Freitas
 */
public class ComandoCriaProfessor implements Command {

    public Map execute(Map<String, String> entrada) {
        Map<String, String> saida = new HashMap();

        Escola escola = Escola.getInstance();
        Map<Integer, Turma> t = buscaTurma(entrada);
        Map<Integer, Professor> professores = new HashMap();

        if (buscaTurma(entrada) != null) {
            Professor p = new Professor();

            p.setNome(entrada.get("nome"));
            p.setCpf(entrada.get("cpf"));
            p.setTelefone(entrada.get("tel"));
            p.setEndereco(entrada.get("end"));
            p.setSexo(entrada.get("sexo"));
            p.setDisciplina(entrada.get("disciplina"));
            p.setIdade(Integer.parseInt(entrada.get("idade")));
            p.setSalario(entrada.get("salario"));


            p.setCodigo(escola.getContProfessores());
            escola.setContProfessores(escola.getContProfessores() + 1);
            professores.put(p.getCodigo(), p);
            escola.salvar();

            t.get(0).setProfessores(professores);


            saida.put("msg", "Professor " + p.getCodigo() + " criado com sucesso!");
            System.out.println(p.toString());
        } else {
            saida.put("msg", "A turma não pode ser encontrada!");
        }
        return saida;

    }

    public Map<Integer, Turma> buscaTurma(Map<String, String> entrada) {
        Escola escola = Escola.getInstance();
        Map<Integer, Turma> turmas = escola.getTurmas();
        int codigo = Integer.parseInt(entrada.get("codTurma"));
        for (Map.Entry<Integer, Turma> t : turmas.entrySet()) {
            if (codigo == t.getKey()) {
                turmas = new HashMap();
                turmas.put(0, t.getValue());
                return turmas;
            }
        }

        return null;
    }
}
